11333
16221
Eu tenho um conjunto de dados conforme fornecido abaixo
nome col1 col2
a 10,3 10,9
b 11 15
c 20 7,2
d 6,2 6,2
e 5,3 5,4
f 4.5 4.0
eu quero comparar col1 e col2 do meu df e quero fazer outra coluna em que ao comparar os valores col1 e col2 se o valor de col2 está aumentando de col1, então eu quero inserir o aumento ao lado deles na minha coluna lá e se eles forem diminuindo então eu quero escrever decrescente e sem mudanças se eles forem iguais
e eu quero minha saída assim
nome col1 col2 col3
um aumento de 10,3 10,9
b 11 15 aumentando
c 20 7,2 diminuindo
d 6,2 6,2 sem alteração
e 5,3 5,4 aumentando
f 4,5 4,0 diminuindo 
Com dplyr:
df%>%
mutate (Col3 = ifelse (col2 == col1,
"nenhuma mudança",
ifelse (col2> col1,
"aumentando", "diminuindo")))
Ou usando case_when como sugerido por @akrun:
df%>%
mutate (Col3 = case_when (col1 == col2 ~ "sem alteração",
col2> col1 ~ "Aumentando",
VERDADEIRO ~ "diminuindo"))
Resultado:
nome col1 col2 col3
1 a 10,3 10,9 aumentando
2 b 11,0 15,0 aumentando
3 c 20,0 7,2 diminuindo
4 d 6,2 6,2 sem alteração
5 e 5,3 5,4 aumentando
6 f 4.5 4.0 diminuindo
Dados:
df <-structure (list (name = c ("a", "b", "c", "d", "e", "f"), col1 = c (10.3,
11, 20, 6.2, 5.3, 4.5), col2 = c (10.9, 15, 7.2, 6.2, 5.4, 4)), class = "data.frame", row.names = c (NA,
-6L))
|
Podemos subtrair col1 por col2 e então usar o sinal para atribuir valores
df $ col3 <- c ("diminuindo", "sem alteração", "aumentando") [sinal (df $ col1 - df $ col2) + 2]
df
# name col1 col2 col3
# 1 a 10,3 10,9 diminuindo
# 2 b 11,0 15,0 diminuindo
# 3 c 20,0 7,2 aumentando
# 4 d 6,2 6,2 sem alteração
# 5 e 5.3 5.4 diminuindo
# 6 f 4.5 4.0 aumentando
Ou usando dplyr podemos usar case_when
biblioteca (dplyr)
df%>%
mutate (col3 = case_when (col1 == col2 ~ "sem alteração",
col1> col2 ~ "aumentando",
VERDADEIRO ~ "diminuindo"))
|
Base R
df $ col3 <-with (df, ifelse (col1> col2, "diminuindo",
ifelse (col1